import requests
from bs4 import BeautifulSoup
import re
import random
import sys
from MySqlClient import MysqlClient
import binascii

headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "referer": "http://ip.zdaye.com/dayProxy.html",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
    "cookie": "acw_tc=76b20f4815453631721906141e8e7d5446fc8a49862e5af0dea104f5df6eb4; ASPSESSIONIDCCABRBQR=LONPPLCCLPGLELACFHAAJAFL; __51cke__=; Hm_lvt_8fd158bb3e69c43ab5dd05882cf0b234=1545363173; ASPSESSIONIDCADCQARQ=AFHBBKDCKIFGPJBCOJKMKOHN; ASPSESSIONIDQQSSCDST=OJGJBBECAFMMBOHLADCEMFOP; acw_sc__v3=5c1c87a821d32ceeaf72523df1d9714e32ebae2c; acw_sc__v2=NWMxYzg3YjEyNTQzOTg5MWQxYmNkMjVlMTVlYmE3NDkzZDA5MTI0Yg==; __tins__16949115=%7B%22sid%22%3A%201545373286942%2C%20%22vd%22%3A%206%2C%20%22expires%22%3A%201545375730189%7D; __51laig__=25; Hm_lpvt_8fd158bb3e69c43ab5dd05882cf0b234=1545373930"
}
base_url = 'http://ip.zdaye.com'

proxies = {
}


class Proxy(object):
    def get_home(self, home_url):
        get = requests.get(home_url)
        print('get is =',get.text)
        soup = BeautifulSoup(get.text, 'lxml')
        divs = soup.find_all('div', class_=["table-hover"])
        if divs is not None and len(divs) > 0:
            href = divs[0].find('div', {'class': 'title'}).find('a')['href']
            return base_url + href
        else:
            return None

    def parse_href(self, url):
        get = requests.get(url, headers=headers, proxies=proxies)
        print(get.encoding)
        # 从内容中分析出的响应内容编码方式
        print(get.apparent_encoding)
        print(get.text.encode(get.encoding).decode(get.apparent_encoding, errors='ignore'))
        soup = BeautifulSoup(get.text.encode(get.encoding).decode(get.apparent_encoding, errors='ignore'), 'lxml')
        content = soup.find('div', {'class': 'cont'})
        result_list = []
        if content is not None:
            content = str(content)
            print(content)
            content = re.sub('<br(/|)>', '\n', str(content), count=0)
            print(content)
            pattern = "[0-9].*\n"
            pattern2 = "\[.*\]"
            pattern3 = "[0-9].*\@"
            re_compile = re.compile(pattern)
            results = re_compile.findall(content)
            for result in results:
                print(result)
                search = re.search(pattern2, result, re.M | re.I)
                tag = search.group()
                tag = tag[1:len(tag) - 1]
                print(tag)
                address_re = re.search(pattern3, result, re.M | re.I)
                address = address_re.group().replace('@', '')
                mysql = MysqlClient()
                mysql.add(address, tag)
                sql = {address: tag}
                result_list.append(sql)
            return results
        return None

    def get_random_proxy(self):
        with open('proxy.txt', 'r') as f:
            list = f.read().splitlines()
        if list is not None and len(list) > 1:
            choice = random.randint(1, len(list) - 1)
            return list[choice]
        else:
            return None

    def test(self):
        content = '<br/>175.25.26.184:10080@HTTP#[未知]北京市 北京数据家科技有限公司IDC机房(电信)<br/>114.116.10.21:3128@HTTP#[透明]广东省深圳市 长城宽带<br/>39.137.168.230:8080@HTTP#[高匿]北京市 移动<br/>125.39.9.34:9000@HTTP#[普匿]天津市 联通<br/>5.58.95.254:55048@HTTP#[高匿]辽宁省鞍山市<br/>110.52.234.209:9999@HTTP#[未知]湖南省岳阳市 联通<br/>14.115.107.88:9797@HTTP#[未知]广东省中山市 电信<br/>112.17.38.136:3128@HTTP#[高匿]浙江省杭州市 移动<br/>119.101.114.131:9999@HTTP#[未知]湖北省潜江市 电信<br/>218.24.16.198:50044@HTTP#[未知]辽宁省铁岭市 联通<br/>119.57.108.89:53281@HTTP#[未知]北京市 东四IDC机房<br/>119.39.238.139:9999@HTTP#[未知]湖南省娄底市 联通<br/>123.235.32.36:45611@HTTP#[未知]山东省青岛市 联通<br/>119.101.117.149:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.39.238.193:9999@HTTP#[未知]湖南省娄底市 联通<br/>119.101.115.36:9999@HTTP#[未知]湖北省潜江市 电信<br/>122.7.206.205:8060@HTTP#[未知]山东省威海市 电信<br/>119.101.113.165:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.39.238.149:9999@HTTP#[未知]湖南省娄底市 联通<br/>219.141.153.44:80@HTTP#[高匿]北京市 电信<br/>183.230.177.118:8060@HTTP#[未知]重庆市 移动<br/>119.101.117.97:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.101.115.5:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.101.116.219:9999@HTTP#[未知]湖北省潜江市 电信<br/>125.73.220.18:49128@HTTP#[未知]广西钦州市 电信<br/>175.8.254.155:8060@HTTP#[未知]湖南省长沙市 电信<br/>218.58.193.98:8060@HTTP#[未知]山东省威海市 联通<br/>47.104.193.87:8080@HTTP#[普匿]山东省青岛市 阿里云<br/>180.140.191.233:31486@HTTP#[未知]广西南宁市 电信<br/>119.101.114.25:9999@HTTP#[高匿]湖北省潜江市 电信<br/>221.210.120.153:54402@HTTP#[未知]黑龙江省绥化市 联通<br/>119.101.115.44:9999@HTTP#[未知]湖北省潜江市 电信<br/>110.52.234.194:9999@HTTP#[未知]湖南省岳阳市 联通<br/>123.139.56.238:9999@HTTP#[未知]陕西省西安市 联通<br/>185.104.252.154:9090@HTTP#[透明]广东省深圳市 联通<br/>36.42.76.150:80@HTTP#[未知]陕西省西安市 电信<br/>222.128.9.235:33428@HTTP#[未知]北京市 联通<br/>222.135.79.47:8060@HTTP#[未知]山东省威海市 联通<br/>173.212.219.151:3128@HTTP#[透明]江苏省泰州市 电信<br/>103.205.27.143:52422@HTTP#[未知]广东省东莞市 电信<br/>117.191.11.71:80@HTTP#[高匿]新疆 移动<br/>218.22.7.62:53281@HTTP#[未知]安徽省合肥市 电信<br/>222.92.112.69:8080@HTTP#[未知]江苏省苏州市 电信<br/>117.191.11.73:80@HTTP#[高匿]新疆 移动<br/>221.176.206.29:8060@HTTP#[未知]河南省 移动<br/>218.59.228.18:44068@HTTP#[未知]山东省枣庄市 联通<br/>60.208.32.201:80@HTTP#[高匿]山东省济南市 联通<br/>218.89.14.122:8060@HTTP#[未知]四川省乐山市 电信<br/>119.101.114.241:9999@HTTP#[高匿]湖北省潜江市 电信<br/>218.60.8.99:3129@HTTP#[透明]辽宁省沈阳市 联通<br/>117.21.182.14:80@HTTP#[未知]江西省九江市 电信<br/>119.101.113.163:9999@HTTP#[高匿]湖北省潜江市 电信<br/>110.52.234.91:9999@HTTP#[未知]湖南省岳阳市 联通<br/>58.210.136.83:30498@HTTP#[未知]江苏省苏州市 电信<br/>119.101.113.248:9999@HTTP#[未知]湖北省潜江市 电信<br/>41.242.140.157:34184@HTTP#[高匿]河南省驻马店市 G<br/>119.101.114.179:9999@HTTP#[未知]湖北省潜江市 电信<br/>183.196.170.247:9000@HTTP#[未知]河北省邢台市 移动<br/>39.108.96.16:80@HTTP#[未知]广东省深圳市 阿里云<br/>115.153.146.35:8060@HTTP#[未知]江西省吉安市 电信<br/>221.180.195.77:80@HTTP#[未知]辽宁省沈阳市 移动<br/>39.137.20.76:80@HTTP#[透明]北京市 移动<br/>120.194.18.90:81@HTTP#[透明]河南省郑州市 移动<br/>61.184.109.33:50371@HTTP#[未知]湖北省黄石市大冶市 电信<br/>119.101.112.206:9999@HTTP#[高匿]湖北省潜江市 电信<br/>103.59.214.242:8080@HTTP#[未知]广东省深圳市 长城宽带<br/>101.132.100.26:80@HTTP#[未知]上海市 阿里云<br/>118.81.69.56:9797@HTTP#[未知]山西省太原市 联通<br/>119.101.114.197:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.39.238.232:9999@HTTP#[未知]湖南省娄底市 联通<br/>125.40.238.181:56738@HTTP#[未知]河南省洛阳市 联通<br/>101.248.64.72:8080@HTTP#[高匿]西藏 电信<br/>119.101.116.184:9999@HTTP#[未知]湖北省潜江市 电信<br/>27.203.138.75:8060@HTTP#[未知]山东省威海市 联通<br/>110.52.234.63:9999@HTTP#[未知]湖南省岳阳市 联通<br/>106.3.79.57:35453@HTTP#[未知]北京市 北京天成通联科技发展有限公司<br/>113.78.255.254:9000@HTTP#[未知]广东省东莞市 电信<br/>110.52.234.124:9999@HTTP#[未知]湖南省岳阳市 联通<br/>183.30.204.49:9999@HTTP#[未知]广东省惠州市 电信<br/>111.47.154.38:53281@HTTP#[未知]湖北省 移动<br/>119.101.113.58:9999@HTTP#[未知]湖北省潜江市 电信<br/>59.37.33.62:50686@HTTP#[高匿]广东省惠州市 电信<br/>119.39.238.111:9999@HTTP#[未知]湖南省娄底市 联通<br/>223.202.204.195:80@HTTP#[透明]北京市 北京蓝汛通信技术有限责任公司CDN节点(BGP)<br/>47.105.41.37:8080@HTTP#[普匿]浙江省杭州市 阿里云<br/>119.39.238.35:9999@HTTP#[高匿]湖南省娄底市 联通<br/>111.43.70.58:51547@HTTP#[未知]黑龙江省 移动(全省通用)<br/>112.17.38.142:3128@HTTP#[高匿]浙江省杭州市 移动<br/>103.26.55.218:8080@HTTP#[透明]四川省德阳市 电信<br/>119.250.167.91:8060@HTTP#[未知]河北省廊坊市 联通<br/>36.110.14.186:3128@HTTP#[透明]北京市 电信<br/>47.107.32.226:3128@HTTP#[未知]浙江省杭州市 阿里云<br/>61.160.233.111:10000@HTTP#[高匿]江苏省常州市 电信<br/>178.210.131.128:41258@HTTP#[高匿]江苏省苏州市 电信<br/>119.187.120.118:8060@HTTP#[未知]山东省 联通<br/>183.207.129.69:8080@HTTP#[未知]江苏省 移动<br/>119.101.112.33:9999@HTTP#[未知]湖北省潜江市 电信<br/>119.101.116.182:9999@HTTP#[高匿]湖北省潜江市 电信<br/>119.101.115.101:9999@HTTP#[高匿]湖北省潜江市 电信<br/>183.236.234.44:38070@HTTP#[未知]广东省广州市 移动'
        content = '<br>119.39.238.37:9999@HTTP#[未知]湖南省娄底市 联通<br>111.231.230.15:3128@HTTP#[透明]广东省广州市 腾讯云<br>117.191.11.101:80@HTTP#[高匿]新疆 移动<br>119.101.112.17:9999@HTTP#[高匿]湖北省潜江市 电信<br>119.39.238.199:9999@HTTP#[高匿]湖南省娄底市 联通<br>119.101.112.33:9999@HTTP#[未知]湖北省潜江市 电信<br>119.101.116.61:9999@HTTP#[高匿]湖北省潜江市 电信<br>114.116.10.21:3128@HTTP#[透明]广东省深圳市 长城宽带<br>119.101.116.184:9999@HTTP#[未知]湖北省潜江市 电信<br>203.86.26.9:3128@HTTP#[透明]广东省深圳市 润迅通信集团有限公司<br>111.7.77.11:80@HTTP#[未知]河南省开封市 移动<br>118.89.138.129:59460@HTTP#[未知]天津市滨海新区 腾讯云华北数据中心<br>110.52.234.138:9999@HTTP#[未知]湖南省岳阳市 联通<br>58.87.103.123:808@HTTP#[高匿]浙江省温州市 广电网<br>119.101.114.111:9999@HTTP#[未知]湖北省潜江市 电信<br>47.104.213.220:8080@HTTP#[普匿]山东省青岛市 阿里云<br>119.101.116.114:9999@HTTP#[高匿]湖北省潜江市 电信<br>47.105.41.37:8080@HTTP#[普匿]浙江省杭州市 阿里云<br>119.101.113.163:9999@HTTP#[高匿]湖北省潜江市 电信<br>119.101.113.230:9999@HTTP#[高匿]湖北省潜江市 电信<br>61.135.155.82:443@HTTP#[高匿]北京市 联通互联网数据中心<br>47.104.193.87:8080@HTTP#[普匿]山东省青岛市 阿里云<br>110.52.234.32:9999@HTTP#[未知]湖南省岳阳市 联通<br>101.248.64.72:8080@HTTP#[高匿]西藏 电信<br>189.124.195.185:37318@HTTP#[高匿]云南省昆明市 电信<br>110.52.234.85:9999@HTTP#[高匿]湖南省岳阳市 联通<br>119.101.117.164:9999@HTTP#[未知]湖北省潜江市 电信<br>113.78.255.254:9000@HTTP#[未知]广东省东莞市 电信<br>221.218.102.146:58416@HTTP#[未知]北京市朝阳区 联通<br>119.187.120.118:8060@HTTP#[未知]山东省 联通<br>58.254.220.116:53579@HTTP#[未知]广东省惠州市 联通<br>121.17.18.218:8060@HTTP#[未知]河北省衡水市 联通<br>123.206.103.161:1080@HTTP#[未知]上海市 腾讯云<br>119.101.112.170:9999@HTTP#[未知]湖北省潜江市 电信<br>111.7.77.20:80@HTTP#[未知]河南省开封市 移动<br>119.101.114.197:9999@HTTP#[未知]湖北省潜江市 电信<br>112.247.181.8:8060@HTTP#[未知]山东省威海市 联通<br>119.101.112.127:9999@HTTP#[高匿]湖北省潜江市 电信<br>111.7.77.13:80@HTTP#[未知]河南省开封市 移动<br>219.141.153.11:80@HTTP#[高匿]北京市 电信<br>183.232.113.43:80@HTTP#[未知]广东省惠州市 移动<br>222.184.7.206:47240@HTTP#[未知]江苏省淮安市 电信<br>218.205.30.61:53281@HTTP#[未知]江苏省扬州市 移动<br>119.101.116.6:9999@HTTP#[未知]湖北省潜江市 电信<br>117.21.182.14:80@HTTP#[未知]江西省九江市 电信<br>111.7.77.15:80@HTTP#[未知]河南省开封市 移动<br>110.52.234.38:9999@HTTP#[未知]湖南省岳阳市 联通<br>119.101.113.76:9999@HTTP#[未知]湖北省潜江市 电信<br>36.42.76.150:80@HTTP#[未知]陕西省西安市 电信<br>218.89.14.122:8060@HTTP#[未知]四川省乐山市 电信<br>119.101.112.215:9999@HTTP#[未知]湖北省潜江市 电信<br>119.39.238.75:9999@HTTP#[未知]湖南省娄底市 联通<br>118.89.150.177:1080@HTTP#[未知]天津市滨海新区 腾讯云华北数据中心<br>118.122.92.252:37901@HTTP#[未知]四川省成都市 电信<br>119.101.117.154:9999@HTTP#[高匿]湖北省潜江市 电信<br>173.212.219.151:3128@HTTP#[透明]江苏省泰州市 电信<br>119.101.116.214:9999@HTTP#[高匿]湖北省潜江市 电信<br>39.137.20.76:80@HTTP#[透明]北京市 移动<br>211.159.171.58:80@HTTP#[高匿]北京市 联通<br>114.248.111.136:8060@HTTP#[未知]北京市 联通<br>111.7.77.8:80@HTTP#[未知]河南省开封市 移动<br>119.39.238.44:9999@HTTP#[未知]湖南省娄底市 联通<br>203.130.46.108:9090@HTTP#[透明]北京市 网宿科技<br>114.119.116.92:61066@HTTP#[未知]广东省 联通<br>123.206.6.218:8888@HTTP#[透明]天津市 腾讯云<br>119.101.112.112:9999@HTTP#[未知]湖北省潜江市 电信<br>110.52.234.170:9999@HTTP#[未知]湖南省岳阳市 联通<br>118.24.127.144:1080@HTTP#[未知]广西柳州市高新区 视虎科技有限公司<br>120.198.230.15:8080@HTTP#[未知]广东省东莞市 移动<br>183.47.2.201:43174@HTTP#[未知]广东省 电信<br>119.101.115.29:9999@HTTP#[未知]湖北省潜江市 电信<br>119.39.238.96:9999@HTTP#[未知]湖南省娄底市 联通<br>223.244.252.58:60824@HTTP#[未知]安徽省滁州市 电信<br>85.133.207.14:56728@HTTP#[高匿]湖北省武汉市 联通<br>218.60.8.99:3129@HTTP#[透明]辽宁省沈阳市 联通<br>223.202.204.195:80@HTTP#[透明]北京市 北京蓝汛通信技术有限责任公司CDN节点(BGP)<br>221.205.89.161:9797@HTTP#[未知]山西省大同市 联通<br>183.232.113.40:80@HTTP#[未知]广东省惠州市 移动<br>119.101.115.136:9999@HTTP#[高匿]湖北省潜江市 电信<br>59.48.237.6:8060@HTTP#[未知]山西省吕梁市孝义市 G<br>119.101.114.243:9999@HTTP#[高匿]湖北省潜江市 电信<br>119.101.115.63:9999@HTTP#[未知]湖北省潜江市 电信<br>119.101.112.234:9999@HTTP#[高匿]湖北省潜江市 电信<br>221.7.255.168:80@HTTP#[透明]广西梧州市 联通<br>221.180.195.72:80@HTTP#[未知]辽宁省沈阳市 移动<br>119.180.173.141:8060@HTTP#[未知]山东省 联通<br>110.52.234.174:9999@HTTP#[未知]湖南省岳阳市 联通<br>223.68.190.130:8181@HTTP#[高匿]江苏省南京市 移动<br>121.17.18.219:8060@HTTP#[未知]河北省衡水市 联通<br>139.199.195.191:8000@HTTP#[透明]广东省广州市 深圳市腾讯计算机系统有限公司IDC机房(电信)<br>110.52.234.227:9999@HTTP#[未知]湖南省岳阳市 联通<br>27.203.138.75:8060@HTTP#[未知]山东省威海市 联通<br>113.200.214.164:9999@HTTP#[未知]陕西省西安市 联通<br>36.110.14.186:3128@HTTP#[透明]北京市 电信<br>202.103.12.30:50356@HTTP#[未知]湖北省鄂州市 电信<br>123.207.43.128:1080@HTTP#[未知]广东省广州市 腾讯云<br>124.193.135.242:50591@HTTP#[未知]北京市 鹏博士长城宽带<br>183.236.234.44:38070@HTTP#[未知]广东省广州市 移动<br>47.93.18.195:80@HTTP#[高匿]北京市 阿里云<br>114.244.82.128:8060@HTTP#[未知]北京市 联通'
        content = re.sub('<br(/|)>', '\n', str(content), count=0)
        pattern = "[0-9].*\n"
        pattern2 = "\[.*\]"
        pattern3 = "[0-9].*\@"
        re_compile = re.compile(pattern)
        results = re_compile.findall(content)
        for result in results:
            print(result)
            search = re.search(pattern2, result, re.M | re.I)
            tag = search.group()
            tag = tag[1:len(tag) - 1]
            address_re = re.search(pattern3, result, re.M | re.I)
            address = address_re.group().replace('@', '')
            mysql = MysqlClient()
            mysql.add(address, tag)

    def add_proxy(self):
        url = 'http://ip.zdaye.com/dayProxy.html'
        home = None
        i = 0
        while home is None and i < 10:
            print("get home")
            home = self.get_home(url)
            i = i + 1
        print(home)
        if home is not None:
            result = None
            while result is None:
                print("pause")
                # result = self.parse_href(home)


if __name__ == '__main__':
    # print('x63\x73\x4b\x48\x77\x71\x4d\x49'.encode('utf-8'))
    Proxy().add_proxy()
